package org.fuys.coder.domain.substance.service.repo;

import org.fuys.coder.common.entity.PageDTO;
import org.fuys.coder.domain.substance.model.req.admin.SubstancePublishReq;
import org.fuys.coder.domain.substance.model.vo.SubstanceDetailVO;
import org.fuys.coder.domain.substance.model.vo.SubstanceSupplyVO;
import org.fuys.coder.domain.substance.model.vo.SubstanceVO;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * @projectName: fuys-low-coder
 * @package: org.fuys.coder.domain.substance.service
 * @className: ISubstanceService
 * @author: WangJing
 * @description: 内容服务接口
 * @date: 2024/6/26 16:16
 * @version: 1.0
 */
public interface ISubstanceService {
    public List<SubstanceVO> getSubstanceByCategories(List<Integer> categoryList,int curPage,int substanceSize);

//    Pair<String, Long> getPublishToken(Integer userId);

    void publishSubstance(SubstancePublishReq req);

    SubstanceSupplyVO getSubstanceSupply(Long substanceId);

    SubstanceDetailVO getSubstanceDetail(Long substanceId);

    List<SubstanceVO> getSubstanceAfterTime(Date dateBeforeCur, Integer hotSelectNum);

    List<SubstanceVO> getAuthorSubstancesByOpenFlag(Integer userId, PageDTO pageDTO, boolean showNotOpen);

    List<SubstanceVO> getSubstanceByName(PageDTO pageDTO, String keywords);

    SubstanceVO getSubstanceById(Long id);

    List<SubstanceVO> getSubstanceList(List<Long> id);

    void modifySubstanceStatus(Long id, Integer status, Integer type);

    Set<SubstanceVO> getCacheSubstances(String key,Integer count);
}
